//书写拦截器

import axios from 'axios'
import Vue from 'vue';
import { Toast } from 'vant';

Vue.use(Toast);
//创建axios实例 //instance-实例
const instance = axios.create({
    //请求的前缀可以抽取到banseURL
    baseURL: 'http://kumanxuan1.f3322.net:8001',
    timeout: 5000
})

//请求拦截器
instance.interceptors.request.use(config => {//config 本次请求的基本信息
    //这个函数什么时候执行？这个函数在请求发出去之前就执行，拦截了这次请求
    // console.log(1);
    // console.log('执行了请求拦截器的代码', config);

    //在这个方法中检验，有没有token，如果有就在请求头携带上token
    let token = localStorage.getItem('token');
    if (token) {
        config.headers['X-Nideshop-Token'] = token;
    }
    //在请求头中携带上这个token

    Toast.loading({
        message: '加载中...',
        forbidClick: true,
    });

    return config
}, err => {
    return Promise.reject(err)
})



//响应式拦截
instance.interceptors.response.use(res => {
    //这个函数什么时候执行？这个函数在接收到响应之后，在执行组件中的then函数之前
    // console.log(2)

    //统一管理错误提示
    //判断errno是不是不为0，如果不为0，就说明数据没用正常拿到 直接log errmsg
    let data = res.data

    if (data.errno !== 0) {
        console.log('响应拦截器中', data.errmsg || '网络出错');
    }

    //请求完成就手动关闭这个提示框
    Toast.clear();

    return res.data
}, err => {
    return Promise.reject(err)
})




export default instance